# coding: utf-8

"""
新电脑类比的例子也许有助于区分建造者模式和工厂模式。假设你想购买一台新电脑，
如果决定购买一台特定的预配置的电脑型号，例如，最新的苹果1.4GHz Mac mini，
则是在使用工厂模式。所有硬件的规格都已经由制造商预先确定，
制造商不用向你咨询就知道自己该做些什么， 它们通常接收的仅仅是单条指令
"""
MINI14 = '1.4GHz Mac mini'

class AppleFactory:
    class MacMini14:
        def __init__(self):
            self.memory = 4  # 单位为GB
            self.hdd = 500  # 单位为GB
            self.gpu = 'Intel HD Graphics 5000'

        def __str__(self):
            info = ('Model: {}'.format(MINI14),
                    'Memory: {}GB'.format(self.memory),
                    'Hard Disk: {}GB'.format(self.hdd),
                    'Graphics Card: {}'.format(self.gpu))
            return '\n'.join(info)

    def build_computer(self, model):
        if (model == MINI14):
            return self.MacMini14()
        else:
            print("I dont't know how to build {}".format(model))

if __name__ == '__main__':
    apple = AppleFactory()
    mac_mini = apple.build_computer(MINI14)
    print(mac_mini)
